import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.CsvFileSource;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.Arrays;
import java.util.stream.Stream;

public class JunitTest {

    public static Stream<Arguments> Generate() {
        return Stream.of(Arguments.arguments(1,"张三"),
                Arguments.arguments(2, "李四"),
                Arguments.arguments(3, "王五")
        );
    }

    @Test
    void Test01() {
        System.out.println("daadadad");
    }
    @Test
    void Test02() {
        System.out.println("这是JunitTest里面的test02");
    }
    @Test
    void Test03() {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(6)")).click();
    }
//    @BeforeAll
    static void SetUp() {
        System.out.println("这是BeforeAll里边的语句");
    }
//    @AfterAll
    static void TearDown() {
        System.out.println("这是AfterAll里边的语句");
    }
//    @BeforeEach
    void BeforeEachTest() {
        System.out.println("这是beforeEach里边的语句");
    }
//    @AfterEach
    void AfterEach() {
        System.out.println("这是AfterEach里边的语句");
    }
    @ParameterizedTest
    @ValueSource(ints = {1,2,3})
    void Test04(int num) {
        System.out.println(num);
    }
    @ParameterizedTest
    @ValueSource(strings = {"1","2","3"})
    void Test05(int num2) {
        System.out.println(num2);
    }
    @ParameterizedTest
    @CsvFileSource(resources = "test01.csv")
    //这个测试用例跑几次取决于这个csv文件有几行,有几行就执行几次
    void Test06(String name) {
        System.out.println(name);
    }

//    @Test  //Test注解是不能和 有参数的注解一起使用的，因为当前注解没有参数但是下面的方法中有参数’
    //但是在运行的时候没有传递参数
    @ParameterizedTest
    @MethodSource("Generate")
    void Test07(int num, String name) {
        System.out.println(num + ":" + name);
    }
}
